%% 导入图片并生成路径（假设已校准坐标）
clear all; close all; clc;

% 1. 导入第二张图片
img = imread('第二张图.jpg');
figure('Position', [100, 100, size(img,2), size(img,1)]);
h = imshow(img);
set(h, 'AlphaData', 0.7);  % 图片半透明
hold on;
axis image;
axis off;  % 隐藏坐标轴

% 2. 手动标注节点坐标（示例，实际需根据图片点击）
fprintf('请点击起点A（红色节点）的位置：\n');
start1 = ginput(1);
fprintf('请点击起点B（红色节点）的位置：\n');
start2 = ginput(1);
fprintf('请依次点击所有蓝色配送点的位置（共10个）：\n');
delivery = ginput(10);

% 3. 构建节点坐标矩阵
nodes = [
    1, start1(1), start1(2), 0;  % 起点A
    2, start2(1), start2(2), 0;  % 起点B
    3:12, delivery(:,1), delivery(:,2), 1;  % 配送点3-12
];

% 4. 生成距离矩阵（示例，实际需从第三张图获取）
n = size(nodes,1);
d = zeros(n,n);
for i = 1:n
    for j = 1:n
        if i ~= j
            d(i,j) = sqrt((nodes(i,2)-nodes(j,2))^2 + (nodes(i,3)-nodes(j,3))^2);
        end
    end
end

% 5. 聚类分配与路径优化（同前，省略重复代码）
% ... 此处插入聚类和蚁群算法代码 ...

% 6. 绘制路径（假设已得到path1和path2）
% 绘制起点1路径（红色）
plot(start1(1), start1(2), 'ro', 'MarkerSize', 10, 'MarkerFaceColor', 'r');
for i = 1:length(path1)-1
    idx1 = find(nodes(:,1) == path1(i));
    idx2 = find(nodes(:,1) == path1(i+1));
    x1 = nodes(idx1,2); y1 = nodes(idx1,3);
    x2 = nodes(idx2,2); y2 = nodes(idx2,3);
    plot([x1, x2], [y1, y2], 'r-', 'LineWidth', 2);
    % 添加箭头和顺序标注（同前）
end

% 绘制起点2路径（绿色）
plot(start2(1), start2(2), 'ro', 'MarkerSize', 10, 'MarkerFaceColor', 'r');
for i = 1:length(path2)-1
    idx1 = find(nodes(:,1) == path2(i));
    idx2 = find(nodes(:,1) == path2(i+1));
    x1 = nodes(idx1,2); y1 = nodes(idx1,3);
    x2 = nodes(idx2,2); y2 = nodes(idx2,3);
    plot([x1, x2], [y1, y2], 'g-', 'LineWidth', 2);
    % 添加箭头和顺序标注（同前）
end

% 7. 显示配送点（蓝色）
for i = 3:n
    plot(nodes(i,2), nodes(i,3), 'bo', 'MarkerSize', 8, 'MarkerFaceColor', 'b');
end

title('第二张图叠加最优配送路径');
hold off;